#
#   Kid.py
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; version 2 of the License.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   Copyright
#   Author: Nicholas F. Hoover
#   Contributors:  Salvatore S. Gionfriddo
#   Created: 2007.08.12
#   Last Modified: 2007.11.05
#

from Enemy import Enemy
from Animation import Animation


class BasicKid(Enemy):
    pass
      

class FatKid(Enemy):
      
    ###############
    # FRAME TICKS #
    ###############
    ATTACK1_ANIMATION_FRAME_TICKS = 5
      
    ###################
    # ANIMATION TABLE #
    ###################
    ANIMATION_TABLE = [
        (Enemy.IDLE, 'FatKid_Run',  Enemy.IDLE_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_UP, 'FatKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_DOWN, 'FatKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_SIDE, 'FatKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.ATTACK1,     'FatKid_Bite', ATTACK1_ANIMATION_FRAME_TICKS, Enemy.ATTACK1_KEY_FRAME)]
    
#########
# STATS #    
#########
    SPEED = 2
    MAX_HEALTH = 200
    ATTACK1_DAMAGE = 7


class FastKid(Enemy):

    ###############
    # FRAME TICKS #
    ###############
    ATTACK1_ANIMATION_FRAME_TICKS = 4

    ###################
    # ANIMATION TABLE #
    ###################
    ANIMATION_TABLE = [
        (Enemy.IDLE, 'FastKid_Run',  Enemy.IDLE_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_UP, 'FastKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_DOWN, 'FastKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_SIDE, 'FastKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.ATTACK1,     'FastKid_Bite', ATTACK1_ANIMATION_FRAME_TICKS, Enemy.ATTACK1_KEY_FRAME)]

#########
# STATS #    
#########   
    SPEED = 8
    ATTACK1_DAMAGE = 2
    MAX_HEALTH = 50

class DevilKid(Enemy):

    ###############
    # FRAME TICKS #
    ###############
    ATTACK1_ANIMATION_FRAME_TICKS = 4

    ###################
    # ANIMATION TABLE #
    ###################
    ANIMATION_TABLE = [
        (Enemy.IDLE, 'DevilKid_Run',  Enemy.IDLE_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_UP, 'DevilKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_DOWN, 'DevilKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_SIDE, 'DevilKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.ATTACK1,     'DevilKid_Bite', ATTACK1_ANIMATION_FRAME_TICKS, Enemy.ATTACK1_KEY_FRAME)]

#########
# STATS #    
#########   
    SPEED = 8
    ATTACK1_DAMAGE = 2
    MAX_HEALTH = 50
 
class StrongKid(Enemy):
    ###############
    # FRAME TICKS #
    ###############
    ATTACK1_ANIMATION_FRAME_TICKS = 5

    ###################
    # ANIMATION TABLE #
    ###################
    ANIMATION_TABLE = [
        (Enemy.IDLE, 'StrongKid_Run',  Enemy.IDLE_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_UP, 'StrongKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_DOWN, 'StrongKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_SIDE, 'StrongKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.ATTACK1,     'StrongKid_Bite', ATTACK1_ANIMATION_FRAME_TICKS,       Enemy.ATTACK1_KEY_FRAME)]

#########
# STATS #    
#########
    SPEED = 6
    MAX_HEALTH = 125
    ATTACK1_DAMAGE = 10


class WeakKid(Enemy):
      
    ###################
    # ANIMATION TABLE #
    ###################
    ANIMATION_TABLE = [
        (Enemy.IDLE, 'WeakKid_Run',  Enemy.IDLE_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_UP, 'WeakKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_DOWN, 'WeakKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_SIDE, 'WeakKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.ATTACK1,     'WeakKid_Bite', Enemy.ATTACK1_ANIMATION_FRAME_TICKS, Enemy.ATTACK1_KEY_FRAME)]

###########
# STATS   #    
###########
    SPEED = 3
    MAX_HEALTH = 125
    ATTACK1_DAMAGE = 1



class ThrowingKid(Enemy):
    
    ###############
    # FRAME TICKS #
    ###############
    ATTACK1_ANIMATION_FRAME_TICKS = 5

    ###################
    # ANIMATION TABLE #
    ###################
    ANIMATION_TABLE = [
        (Enemy.IDLE, 'ThrowingKid_Run',  Enemy.IDLE_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_UP, 'ThrowingKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_DOWN, 'ThrowingKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_SIDE, 'ThrowingKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.ATTACK1,     'ThrowingKid_Bite', ATTACK1_ANIMATION_FRAME_TICKS,       Enemy.ATTACK1_KEY_FRAME)]

#########
# STATS #    
#########
    SPEED = 6
    MAX_HEALTH = 125
    ATTACK1_DAMAGE = 10
    
########
# MISC #
########
    CHANCE_TO_THROW = 20 # twenty in one-thousand
    CAN_THROW = True

class SantaKid(Enemy):
    
    ###############
    # FRAME TICKS #
    ###############
    ATTACK1_ANIMATION_FRAME_TICKS = 5

    ###################
    # ANIMATION TABLE #
    ###################
    ANIMATION_TABLE = [
        (Enemy.IDLE, 'SantaKid_Run',  Enemy.IDLE_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_UP, 'SantaKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_DOWN, 'SantaKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_SIDE, 'SantaKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.ATTACK1,     'SantaKid_Bite', ATTACK1_ANIMATION_FRAME_TICKS,       Enemy.ATTACK1_KEY_FRAME)]

#########
# STATS #    
#########
    SPEED = 4
    MAX_HEALTH = 125
    ATTACK1_DAMAGE = 10
    
########
# MISC #
########
    CHANCE_TO_THROW = 20 # twenty in one-thousand
    CAN_THROW = True

class ElfKid(Enemy):
    
    ###############
    # FRAME TICKS #
    ###############
    ATTACK1_ANIMATION_FRAME_TICKS = 5

    ###################
    # ANIMATION TABLE #
    ###################
    ANIMATION_TABLE = [
        (Enemy.IDLE, 'ElfKid_Run',  Enemy.IDLE_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_UP, 'ElfKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_DOWN, 'ElfKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.WALK_SIDE, 'ElfKid_Run',  Enemy.WALK_ANIMATION_FRAME_TICKS,  Animation.NO_KEY_FRAME),
        (Enemy.ATTACK1,     'ElfKid_Bite', ATTACK1_ANIMATION_FRAME_TICKS,       Enemy.ATTACK1_KEY_FRAME)]

#########
# STATS #    
#########
    SPEED = 5
    MAX_HEALTH = 50
    ATTACK1_DAMAGE = 2
    
########
# MISC #
########
    CHANCE_TO_THROW = 10 # in one-thousand
    CAN_THROW = True
